package com.ddwl.schema.vo.order;

import com.ddwl.schema.vo.base.BaseVo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;

import javax.validation.constraints.DecimalMax;
import javax.validation.constraints.DecimalMin;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import java.math.BigDecimal;

/**
 * @author Fu Zhaohui
 * @date 15-1-20
 */
@ApiModel(description = "支付方式Vo")
@Setter
@Getter
public class PaymentVo extends BaseVo {

    @ApiModelProperty("订单ID")
    private String id;
    @ApiModelProperty("订单ID")
    private String orderId;
    @ApiModelProperty("支付方式 WP微信 AP支付宝")
    private String payType;
    @DecimalMin(value = "0.01", message = "最小值金额0.01元")
    @DecimalMax(value = "100000", message = "支付金额异常，请确认")
    @NotNull(message = "支付金额为空")
    @ApiModelProperty("金额")
    private BigDecimal amount;
    @ApiModelProperty("支付状态")
    private Integer tradeStatus;
    @ApiModelProperty("支付描述")
    private String tradeDesc;
    @ApiModelProperty("卖家ID")
    private String sellerId;
    @ApiModelProperty("卖家Email")
    private String sellerEmail;
    @ApiModelProperty("买家ID")
    private String buyerId;
    @ApiModelProperty("买家邮箱")
    private String buyerEmail;
    @ApiModelProperty("下单时间")
    private String gmtCreate;
    @ApiModelProperty("支付时间")
    private String gmtPayment;
    @ApiModelProperty("使用优惠券")
    private String useCoupon;
    @ApiModelProperty("退款时间")
    private String gmtRefund;
    @ApiModelProperty("退款状态")
    private String refundStatus;
    @ApiModelProperty("退款描述")
    private String refundDesc;
    @ApiModelProperty("付款二维码")
    private String codeUrl;
    @ApiModelProperty("第三方平台流水")
    private String tradeNo;
    @ApiModelProperty("收款帐号ID")
    private String appId;
    @ApiModelProperty("用户ID")
    private String userId;
    @ApiModelProperty("二维码分享人")
    private String shareUserId;
    @ApiModelProperty("用户openId")
    private String openId;
    @ApiModelProperty("支付科目")
    private String subject;
    @ApiModelProperty("支付码")
    @Pattern(regexp = "^(1[0-5]\\d{16})|(2[5-9]\\d{14,22})|(30\\d{14,22})$", message = "授权码格式错误")
    private String authCode;
    @ApiModelProperty("附件")
    private String attach;
    @ApiModelProperty("商品Tag")
    private String goodsTag;


    // 微信预支付信息

    @ApiModelProperty("支付状态")
    private String dk;
    @ApiModelProperty("支付状态")
    private String prepayId;
    @ApiModelProperty("支付状态")
    private String sign;
    @ApiModelProperty("支付状态")
    private String nonceStr;
    @ApiModelProperty("支付状态")
    private String timestamp;

    // 服务商支付信息
    @ApiModelProperty("商户ID")
    private String mchId;
    @ApiModelProperty("商户Key")
    private String mchKey;
    @ApiModelProperty("子商户ID")
    private String subMchId;
    @ApiModelProperty("子商户AppId")
    private String subAppId;
    @ApiModelProperty("支付方式  NATIVE")
    private String tradeType;
    @ApiModelProperty("支付状态")
    private String bankType;

    @ApiModelProperty("商户名称")
    private String mchName;
    @ApiModelProperty("门店ID")
    private String shopId;
    @ApiModelProperty("门店名称")
    private String shopName;
}
